home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu086.dms / pu086.adf / CHANGES < prev    next >
Text File  |  1990-12-04  |  12KB  |  329 lines

  1.  
  2.   (c) 1990 S.Hawtin.
  3.   Permission is granted to copy this file provided that:
  4.    1) It is not used for commercial gain
  5.    2) This notice is included in all copies
  6.    3) Altered copies are marked as such
  7.  
  8.   No liability is accepted for the contents of the file.
  9.  
  10.   CHANGES     within     NorthC
  11.  
  12.   This file outlines some of the changes that have occurred to NorthC 
  13. between releases.
  14.  
  15.  Release 1.3
  16.  ***********
  17.  
  18. 1.3.1  static strings in functions
  19.  
  20.   When I fixed initialised static arrays in functions I forgot about strings, 
  21. these have now been fixed.
  22.  
  23. 1.3.2  bsr in crt0.asm
  24.  
  25.   The startup routine in "crt0.asm" incorrectly called the _main() function 
  26. with a "bsr __main", this would generate a 16 bit offset rather than the 
  27. required 32 bit offset.  The call has been changed to a jsr.
  28.  
  29. 1.3.3  realloc
  30.  
  31.   The realloc() function did not return the correct value, this has been 
  32. fixed, also the function did not accept NULL as the value for the pointer.
  33.  
  34. 1.3.4  && and ||
  35.  
  36.   The && and || operators caused some problems, they used the instruction 
  37. "clr d0" where they should have used "clr.l d0".
  38.  
  39. 1.3.5  cc (from Richard Johnston)
  40.  
  41.   The "cc" program used the command "a68k" rather than "a68k -g", this 
  42. caused cc to always fail in NorthC 1.2.
  43.  
  44. 1.3.6  Floating point comparisons
  45.  
  46.   The floating point compare function had a bug, causing the less than 
  47. function to fail, this has been fixed by a new version of the compiler.  
  48. This also caused the floating point formats in printf() to fail.
  49.  
  50. 1.3.7  Large values in switch statements
  51.  
  52.   There was a bug that caused large values in switch statements to compile 
  53. incorrectly, this has now been fixed.
  54.  
  55. 1.3.8  addq.w after function calls (from M.Combs)
  56.  
  57.   The compiler used to reset the stack pointer with an "addq.w" operation 
  58. after every function call, this would not work correctly if the stack 
  59. pointer was close to a block boundary.
  60.  
  61. 1.3.9  definition of WORD in types.h
  62.  
  63.   The file "types.h" defined a WORD as an unsigned short, this is wrong, a 
  64. WORD should be signed.
  65.  
  66. 1.3.10  Examples
  67.  
  68.   For this release I have again changed the set of examples, I have 
  69. included an initial port of the IFF reading programs that were placed in 
  70. the public domain by Electronic Arts, I have extended the "fortune" example 
  71. to use the speech device, and I have used the "disass" program as the 
  72. basis for a more powerfull program for dumping out object files.  All these 
  73. changes do mean that some of the previous examples have been removed, get 
  74. them from old releases of NorthC if you are really interested.
  75.  
  76. 1.3.11  Interrupts
  77.  
  78.   I have made a first attempt to implement interrupts in NorthC, at the 
  79. moment NorthC programs check for interupts whenever a character is written 
  80. to a file or the screen.  If an interupt is detected then a signal is raised 
  81. and the function set up by signal() is called.  I should be able to use the 
  82. Amiga signals to interrupt asynchronusly, but I have yet to get it working 
  83. fully.  There is a new default flag "_WithIntrCheck" set this to 0 in 
  84. "defaults.c" to disable interrupts, if you want to check interrupts, for 
  85. example in an extended loop you should call _CheckIntr() for example
  86.  
  87.     for(i=0;i<1000000;++i)
  88.        {/* Perform some long calculation */
  89.         foo = frobnicate(i);
  90.         /* Check to see if the user has hit <Control-C> */
  91.         _CheckIntr();
  92.         }
  93.  
  94. will test for interrupt characters each time round the loop.
  95.  
  96.  Release 1.2
  97.  ***********
  98.  
  99. 1.2.1  A68K
  100.  
  101.   A new version of A68K is being used, this allows the use of two 
  102. flags,"-g" and "-q".  The "-q" flag prevents A68K from outputting as it 
  103. assembles, unless it has an error message to report.  The "-g" flag makes 
  104. all undefined symbols into globals, this means that NorthC does not need 
  105. to add lots of "XREF" calls.  The "make" program has been altered to take 
  106. advantage of the new "a68k".
  107.  
  108. 1.2.2  "top"
  109.  
  110.   The "top" optimiser has been ported from Sozobon C on FISH 314, this 
  111. will reduce the size of object code.  Because it takes some time it should 
  112. only be used when you don't mind waiting for compilations.  The code has 
  113. been slightly modified to work with NorthC.  The optimiser does not seem 
  114. to make as much difference as I would expect, I suspect that I have 
  115. introduced a bug with my changes.
  116.  
  117. 1.2.3  strtol()
  118.  
  119.   Another bug in strtol() has been fixed, when the number filled the 
  120. string the wrong value was returned.  Maybe this will fix strtol() for good.
  121.  
  122. 1.2.4  UNIX library
  123.  
  124.   A library of UNIX style functions has been implemented, these are to 
  125. make "a68k" work.  These functions are for porting programs from UNIX and 
  126. MSDOS, once the code is ported it would be best to convert it to "proper" 
  127. ANSI functions.  See the documentation file for details.
  128.  
  129. 1.2.5  More examples
  130.  
  131.   I will release NorthC 1.2 as a two disk set, this will allow me to 
  132. release more of the source code, and more examples.  I will attempt to put 
  133. all the essential code on one disk and examples on the other.  From now on 
  134. I will only release NorthC in compressed form.  The file "CONTENTS" will 
  135. shows which code is on each disk.
  136.  
  137. 1.2.6  Static arrays in functions
  138.  
  139.   The bug with static arrays in functions has now been fixed.
  140.  
  141. 1.2.7  Preprocessor directives
  142.  
  143.   The bug with #undef reported by Martin Combs has now been fixed, a new 
  144. ANSI style preprocessor directive #elif has been implemented.
  145.  
  146. 1.2.8  Clearing address registers
  147.  
  148.   The bug that caused incorrect assembly code to be generated when address 
  149. registers were set to zero has been fixed.
  150.  
  151. 1.2.9  New NorthC command line flags
  152.  
  153.   NorthC will now accept a "-C" flag, if this is set all BSS and DATA 
  154. segments will be placed in chip memory.
  155.  
  156. 1.2.10  Default console
  157.  
  158.   The default console is now "con:20/20/400/100/NorthC Program" to allow 
  159. programs more chance to run if you boot up with old disks that do not 
  160. support the "newcon:" device.
  161.  
  162. 1.2.11  "crt0.asm"
  163.  
  164.   The "crt0.asm" file has been tidied up following suggestions from Martin 
  165. Combs, thanks Martin.
  166.  
  167. 1.2.12  Mini-hello, translate and fortune
  168.  
  169.   Three new example programs have been placed on the examples disk, 
  170. "mini-hello" shows how to create small 'C' programs, "fortune" prints out 
  171. inane phrases and "translate" translates ASCII files into a format that 
  172. word processors like.
  173.  
  174. 1.2.13  4 byte integers
  175.  
  176.   I have converted the 'C' library to use 4 byte integers, I have used the 
  177. changes from Jeff Lydiat to convert the compiler to use 4 byte integers as 
  178. well.
  179.  
  180. 1.2.14  Workbench arguments
  181.  
  182.   I have changed the startup so that if a NorthC program is started from 
  183. the workbench then it will have some arguments passed in the "argc" and 
  184. "argv" arguments.  If the icon is a tool type then "argc" will be 1 and 
  185. "argv[0]" will be the name of the program, if the icon is of project type 
  186. then "argc" will be 2 and "argv[1]" will be the name of the icon that 
  187. called the tool.
  188.  
  189. 1.2.15  New variables
  190.  
  191.   The variables "_WBmsg" and "_Task" are now available for 'C' to 
  192. manipulate, "_WBmsg" contains a pointer to the workbench message if the 
  193. program was started from the workbench, "_Task" contains a pointer to the 
  194. program's task structure.
  195.  
  196. 1.2.16   _stdoutUnbuffered
  197.  
  198.   A new integer variable has been defined, _stdoutUnbuffered, if the value 
  199. of this variable is 0 then the "stdout" FILE will buffer its output.
  200.  
  201. 1.2.17  "defaults.c"
  202.  
  203.   The variables that control the behaviour of the program have been 
  204. collected into a single file "defaults.c" you can change the behaviour by 
  205. editing this file and including the resulting object file in your program.
  206.  
  207. 1.2.18  Other things
  208.  
  209.   Again most of the changes for this release have not been documented, if 
  210. you are updating from an earlier version you should be careful. However the 
  211. good news is that
  212.  
  213.     Draw(rport,20,60);
  214.  
  215. will no longer trash your machine.
  216.  
  217.  Release 1.1
  218.  ***********
  219.  
  220. 1.1.1  Static variables
  221.  
  222.   The bug with static variables within functions has been fixed.
  223.  
  224. 1.1.2  AmigaDOS stubs
  225.  
  226.   The stubs for most AmigaDOS libraries have been added, the only 1.3 
  227. libraries that are not covered are "mathieeedoubbas.library" and 
  228. "mathieeedoubtrans.library".  The OpenLibrary() function has been extended 
  229. to, detect the opening of standard libraries, note the library pointer for 
  230. 'C' stubs, and cause the automatic closing of libraries when exit() is 
  231. called or the program terminates.
  232.  
  233. 1.1.3  Time functions
  234.  
  235.   Most of the functions in the ANSI 'C' time package have now been added 
  236. to the library, the only remaining missing function is mktime().
  237.  
  238. 1.1.4  Floating point
  239.  
  240.   Floating point numbers now work, the compiler will now recognise them, 
  241. the subtraction and division functions take their arguments in the correct 
  242. order, the printf() function can use floating point formats, and so on.  I 
  243. have not extended scanf() to cover floating point numbers yet, see "Bugs.doc".
  244.  
  245. 1.1.5  New functions
  246.  
  247.   A number of functions have been added to the 'C' library, these 
  248. include_div(), _ldiv(), abs(), atan2(), atexit(), bsearch(), fmod(), 
  249. frexp(), labs(), ldexp(), memchr(), memcmp(), memmove(), memset(), modf(), 
  250. perror(), qsort(), rand(), rename(), srand(), strerror(), strtod() and 
  251. tmpnam()see the "libc.doc" file for details of the latest set of functions 
  252. that are included in the library.
  253.  
  254. 1.1.6  New Definitions
  255.  
  256.   A number of definitions have been added to the 'C' include files, these 
  257. include atof(), atoi(), atol(), EDOM and ERANGE the "libc.doc" file gives 
  258. details.
  259.  
  260. 1.1.7  Locale and multibyte support
  261.  
  262.   Having decided not to support the locale and multibyte characters in 
  263. ANSI 'C' I have explained ways to emulate the functions in the "libc.doc" 
  264. file.
  265.  
  266. 1.1.8  File handling
  267.  
  268.   The file handling functions have been tidied up, this includes the 
  269. implementation of some previously missing functions, fgetpos(), freopen(), 
  270. fread(), fseek(), fsetpos(), fwrite(), ftell() and rewind().  In addition 
  271. the functions fopen() and fflush() have been extended to allow files to be 
  272. opened with all the ANSI file modes.  This has been made easier by the 
  273. fact binary files and text files are the same.
  274.  
  275. 1.1.9  strtol()
  276.  
  277.   The strtol() function was incorrectly defined to take a long value for 
  278. the base.  Once this was fixed the function would fail if a base of zero 
  279. was used, this has been fixed as well.
  280.  
  281. 1.1.10  Documentation
  282.  
  283.   The file "AmigaDOS.doc" has been added, this lists all the AmigaDOS 
  284. functions that are supported by this version of the 'C' library.  The file 
  285. "CHANGES", this file, lists all the changes from previous versions of NorthC.
  286.  
  287. 1.1.11  Make program
  288.  
  289.   A version of "make" has been created and added to the environment, some 
  290. documentation for the program has been created.  This is not a full 
  291. implementation, for example it does not support macros, however it does 
  292. most things that are required.
  293.  
  294. 1.1.12  GNU-GO
  295.  
  296.   The program "gnu-go" has been removed from the disk, if you are 
  297. interested in the game of "go" you can get the source from NorthC 1.0, 
  298. check out your local public domain supplier.  Fish 340 contains a copy, if 
  299. you can get the "unpack" script file to work.
  300.  
  301. 1.1.13  CRender
  302.  
  303.   An example program "CRender" has been created, this will provide a 
  304. simple display of a three dimensional object rotating in space.  The 
  305. directory "NorthC:examples/CRender" gives some documentation.
  306.  
  307. 1.1.14  Workbench directory
  308.  
  309.   When a program is called from the workbench the directory is now set 
  310. correctly.
  311.  
  312. 1.1.15  Other things
  313.  
  314.   Most of the changes for this release have not been documented, if you 
  315. are updating from an earlier version (either 1.0 or 0.1) you should be 
  316. careful. Beware of weirdness arising from the fact that all AmigaDOS 
  317. routines take long arguments,
  318.  
  319.     Draw(rport,20,60);
  320.  
  321. for example will almost certainly trash your machine.
  322.  
  323.  Release 1.0
  324.  ***********
  325.  
  326.   This was the initial public release of NorthC, it includes a 'C' 
  327. compiler and library.  Some of the numerous bugs and omissions are 
  328. documented in "Bugs.doc" and "libc.doc".
  329.